﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Company.Database.Base.Entities
{
    /// <summary>
    /// OBR段用于传输关于检验报告相关的医嘱信息
    /// </summary>
    [Table(nameof(HL7OBR))]
    public class HL7OBR : HL7Base
    {
        /// <summary>
        /// 确定不同的OBR字段
        /// </summary>
        public string? setID { get; set; }
        /// <summary>
        /// 请求者医嘱号，用作样本条码号
        /// </summary>
        public string? placerOrderNumber { get; set; }
        /// <summary>
        /// 执行者医嘱号，用作样本编号
        /// </summary>
        public string? fillerOrderNumber { get; set; }
        /// <summary>
        /// 通用服务标识符，用厂商名^型号
        /// </summary>
        public string? universalServiceID { get; set; }
        /// <summary>
        /// 是否急诊，是为Y，否为N
        /// </summary>
        public string? priority { get; set; }
        /// <summary>
        /// 请求时间/日期，用作样本采集时间
        /// </summary>
        public DateTime requestedDatetime { get; set; }
        /// <summary>
        /// 观察日期/时间，用作检验时间
        /// </summary>
        public DateTime observationDateTime { get; set; }
        /// <summary>
        /// 置空，保留。观察结束日期/时间
        /// </summary>
        public DateTime observationEndDateTime { get; set; }
        /// <summary>
        /// 采集量，用作样本手工稀释倍数
        /// </summary>
        public string? collectionVolume { get; set; }
        /// <summary>
        /// 采集者标示，用作样本位（由样本架号^架上样本位号组成）
        /// </summary>
        public string? collectorIdentifier { get; set; }
        /// <summary>
        /// 置空，保留。样本处理代码
        /// </summary>
        public string? specimenActionCode { get; set; }
        /// <summary>
        /// 置空，保留。危险代码
        /// </summary>
        public string? dangerCode { get; set; }
        /// <summary>
        /// 相关临床信息，用作病人临床诊断信息
        /// </summary>
        public string? relevantClinicalInfo { get; set; }
        /// <summary>
        /// 送检时间
        /// </summary>
        public DateTime specimenReceivedDateTime { get; set; }
        /// <summary>
        /// 样本来源，用作样本类型，样本类型默认取值为：血清取值”serum”，血浆取值”plasma”，尿液取值”urine”，根据产品的不同，用户也可以更改为自定义值（即操作软件上定义的样本类型）
        /// </summary>
        public string? specimenSource { get; set; }
        /// <summary>
        /// 医嘱提供者，用作送检医生
        /// </summary>
        public string? orderingProvider { get; set; }
        /// <summary>
        /// 送检科室
        /// </summary>
        public string? orderCallbackPhoneNumber { get; set; }
        /// <summary>
        /// 样本性状（黄疸取值”icterus”，溶血取值”hemolysis”，脂血取值”lipemia”，其他根据平台客户的自定义值进行取值。）
        /// </summary>
        public string? placerField1 { get; set; }
        /// <summary>
        /// 血袋编号
        /// </summary>
        public string? placerField2 { get; set; }
        /// <summary>
        /// 主治医生
        /// </summary>
        public string? fillerField1 { get; set; }
        /// <summary>
        /// 治疗科室
        /// </summary>
        public string? fillerField2 { get; set; }
        /// <summary>
        /// 置空，保留。结果报告/状态改变-日期/时间
        /// </summary>
        public DateTime resultRptStatusChangeDateTime { get; set; }
        /// <summary>
        /// 置空，保留。实行费用
        /// </summary>
        public string chargetoPractice { get; set; }
        /// <summary>
        /// 置空，保留。诊断部分ID
        /// </summary>
        public string? diagnosticServSectID { get; set; }
        /// <summary>
        /// 置空，保留。结果状态
        /// </summary>
        public string? resultStatus { get; set; }
        /// <summary>
        /// 置空，保留。父医嘱结果
        /// </summary>
        public string? parentResult { get; set; }
        /// <summary>
        /// 置空，保留。数量/时间
        /// </summary>
        public string? quantityTiming { get; set; }
        /// <summary>
        /// 置空，保留。结果抄送
        /// </summary>
        public string? resultCopiesTo { get; set; }
        /// <summary>
        /// 置空，保留。父医嘱
        /// </summary>
        public string? parent { get; set; }
        /// <summary>
        /// 置空，保留。传输模式
        /// </summary>
        public string transportationMode { get; set; }
        /// <summary>
        /// 置空，保留。研究原因
        /// </summary>
        public string? reasonforStudy { get; set; }
        /// <summary>
        /// 置空，保留。结果主要解释者
        /// </summary>
        public string? principalResultInterpreter { get; set; }
        /// <summary>
        /// 置空，保留。结果辅助解释者
        /// </summary>
        public string? assistantResultInterpreter { get; set; }
        /// <summary>
        /// 置空，保留。技术员
        /// </summary>
        public string? technician { get; set; }
        /// <summary>
        /// 置空，保留。转录
        /// </summary>
        public string? transcriptionist { get; set; }
        /// <summary>
        /// 置空，保留。预定日期/时间
        /// </summary>
        public DateTime scheduledDateTime { get; set; }
        /// <summary>
        /// 置空，保留。样本容器数量
        /// </summary>
        public string? numberofSampleContainers { get; set; }
        /// <summary>
        /// 置空，保留。采集样本的运输后勤
        /// </summary>
        public string? transportLogisticsofCollectedSample { get; set; }
        /// <summary>
        /// 置空，保留。采集者注释
        /// </summary>
        public string? collectorsComment { get; set; }
        /// <summary>
        /// 置空，保留。运输安排负责
        /// </summary>
        public string? transportArrangementResponsibility { get; set; }
        /// <summary>
        /// 置空，保留。运输是否安排
        /// </summary>
        public string? transportArranged { get; set; }
        /// <summary>
        /// 置空，保留。需要护送
        /// </summary>
        public string? escortRequired { get; set; }
        /// <summary>
        /// 置空，保留。已安排的病人运输注释
        /// </summary>
        public string? plannedPatientTransportComment { get; set; }
        /// <summary>
        /// 置空，保留。请求者名字
        /// </summary>
        public string? orderingFacilityName { get; set; }
        /// <summary>
        /// 置空，保留。请求者地址
        /// </summary>
        public string? orderingFacilityAddress { get; set; }
        /// <summary>
        /// 置空，保留。请求者电话号码
        /// </summary>
        public string? orderingFacilityPhoneNumber { get; set; }
        /// <summary>
        /// 置空，保留。请求者提供者地址
        /// </summary>
        public string? orderingProviderAddress { get; set; }
    }
}
